#ifndef POPUPLISTADO_H
#define POPUPLISTADO_H

#include <map>

#include <gtkmm/window.h>
#include <gtkmm/dialog.h>
#include <gtkmm/box.h>
#include <gtkmm/button.h>

#include "DataGrid.h"
#include "Configuraciones.h"

/**
 * Es el tipo de ventana de opciones generica para las opciones
 * que contienen una grilla de datos
 */
class DialogListado: public Gtk::Dialog {
	private:
		Gtk::Box _divisor;
		Gtk::Box _contenedorBtns;
		Gtk::Box _contenedorGrilla;

		Gtk::Button _btnAgregar;
		Gtk::Button _btnEliminar;

		DataGrid _grillaDatos;

		// Las funciones que permiten modificar la grilla
		void agregarFila();
		void eliminarFila();

	protected:
		Configuraciones** _ppConfig;

		// Carga los datos en la ventana
		virtual void setearParametros() =0;

		// Funciones que definen el comportamiente de los botones del
		// cuadro de dialogo
		virtual void aceptar() =0;
		virtual void cancelar() =0;

		// Elimina todo el contenido de la grilla
		void borrarDatos();

		// Cargar todo el contenido de la grilla en un map
		void obtenerDatosGrilla(std::map<std::string, std::string>& mapa);
		void abrirDialogo();
	public:
		DialogListado(std::string titulo, std::string col1, std::string col2,
			Configuraciones** params, Gtk::Window& padre);
		virtual ~DialogListado();

		// Permite agregar filas de datos a la grilla
		void agregarDatos(std::string a, std::string b);
};


#endif
